export function splitIntoPairs(arr: any[], sliceNum = 2) {
    const result = [];
    // 循环遍历数组，步长为2
    for (let i = 0; i < arr.length; i += sliceNum) {
        // 从当前索引开始，截取最多2个元素
        result.push(arr.slice(i, i + sliceNum));
    }
    return result;
}

export function goPage(url: string) {
    if (!url) return
    // 判断是否是外部链接,只要有带http或https或是域名的链接,都认为是外部链接
    if (url.startsWith('http') || url.startsWith('https')) {
        window.open(url)
    } else {
        navigateTo(url)
    }
}
export function getIsMobile() {
    let isMobile;
    // 解析设备信息
    if (typeof window !== 'undefined') {
        // 客户端环境（window 存在）
        isMobile = window.innerWidth <= 768
    }
    // 判断是否为移动端（包含手机、平板）
    const isPC = !isMobile

    return {
        isMobile,
        isPC,
    }
}

/**
 * 获取DOM元素相对于屏幕视口边框的距离
 * @param element 目标DOM元素
 * @returns 包含各方向距离的对象
 */
export function getElementScreenPosition(element: HTMLElement): {
    top: number;         // 元素上边框到视口上边缘的距离
    bottom: number;      // 元素下边框到视口上边缘的距离
    left: number;        // 元素左边框到视口左边缘的距离
    right: number;       // 元素右边框到视口左边缘的距离
    toRight: number;     // 元素右边框到视口右边缘的距离
    toBottom: number;    // 元素下边框到视口下边缘的距离
    width: number;       // 元素宽度（含内边距和边框）
    height: number;      // 元素高度（含内边距和边框）
} {
    // 获取元素的位置信息
    const rect = element?.getBoundingClientRect();

    // 计算到右边缘和下边缘的距离
    const toRight = window?.innerWidth - rect?.right;
    const toBottom = window?.innerHeight - rect?.bottom;

    return {
        top: rect?.top ?? 0,
        bottom: rect?.bottom ?? 0,
        left: rect?.left ?? 0,
        right: rect?.right ?? 0,
        toRight,
        toBottom,
        width: rect?.width ?? 0,
        height: rect?.height ?? 0
    };
} 